
# 寄存器冲突的问题

code segment

start:	mov ax,data
		mov ds,ax
		mov bx,0

		mov cx,4
	s:	mov si,bx
		call captial
		add bx,5
		loop s

		mov ax,4c00h
		int 21h

captial:mov cl,[si]
		mov ch,0
		jcxz ok
		and byte ptr [si],11011111b
		inc si
		jmp short captial
	ok: ret
code ends
end start

# 上过的过程中 cx 被反复使用  cl 和 ch ，在上面的函数使用了，后面又使用了，会导致寄存器的冲突

# 修改 captial

captial:	push cx
			push si

change:		mov cl,[si]
			mov ch,0
			jcxz ok
			and byte ptr [si],11011111b
			inc si
			jmp short change

	ok:		pop si
			pop cx
			ret
# 在使用寄存器前，先把原本寄存器的数据入栈，存起来先，用完这个寄存器后，再将stack 中的数据 pop 回寄存器里
# 即使用中间过渡的 stack 存储数据